#什么日志
#内置模块   logging
#   四大组件
#       1、日志器Logger -->入口
#       2、处理器Handler    -->执行者  日志文件    控制台
#       3、格式器Formatter  -->日志输出的内容
#       4、过滤器Filter -->输出特定内容
#       关系：一个日志器可以有多个处理器、每个处理器可以各自的格式器与过滤器
#       重复输出日志的原因:处理器被重复添加
import logging

class Framelog:
    def __getattribute__(self, item):
        logger = logging.getLogger("logger")   #创建日志器对象
        if not logger.handlers: #如果没有处理器才添加处理器否则会处理器重复
            logger.setLevel(logging.INFO)   #作用当前日志器所有的处理器的级别，日志输出当前级别及以上级别内容,默认级别是warning
            SH = logging.StreamHandler()  #创建控制台处理器-》》输出到控制台
            fileSH = logging.FileHandler("log.txt")#创建文件处理器
            #SH.setLevel()   #作用指定处理器的级别
            formatter=logging.Formatter(fmt="[%(asctime)s][%(filename)s]%(levelname)s:%(message)s",
                                        datefmt="%Y-%m-%d %H:%M:%S")   #日志包含内容 时间  文件  日志级别(debug/info/warning/error/critical)：事件描述、问题描述
            logger.addHandler(SH)   #日志器绑定处理器
            logger.addHandler(fileSH)
            SH.setFormatter(formatter)  #处理器绑定格式器
            fileSH.setFormatter(formatter)  #文件处理器绑定格式器
        return logger
    def mulSum(self,*args):
        try:
            for num in args:
                sum+=num
            self.getLogger().info("计算了多个数之和",sum)
            return sum
        except Exception as error:
            self.getLogger().info("计算异常")
    # try:
    #     score = int(input("请输入你的成绩"))
    #     if score > 60:
    #         print("恭喜")
    #     else:
    #         print("继续努力")
    #     logger.info("你查询成绩成功")
    #     logger.warning("这是警告信息")
    # except Exception as error:
    #     logger.error(f"输入的不是数字，错误信息{str(error)}")
    # # logger.error("错误信息001")   #假设报错












